package Techniques;

public class LC0136 {
    /**
     * 本体采用的方法是异或。异或具有以下性质，可用于本题的解决：
     * 1. 满足交换律。a^b^a=a^a^b。
     * 2. 任何数和自身异或，结果为0。
     * 3. 0和任何数x异或，结果为x。
     */
    public int singleNumber(int[] nums) {
        int ret = nums[0];
        for (int i = 1; i < nums.length; i++) {
            ret = ret ^ nums[i];
        }
        return ret;
    }
}
